#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long Ull;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll qpow(ll a,ll n)
{
	ll ans=1;
	while(n)
	{
		if(n&1) ans=ans*a%mod;
		a=a*a%mod;
		n>>=1;
	}
	
	return ans ;
}
int main()
{
	ll n;
	cin>>n;
	if(n==1)
	{
		printf("%d",0);
        return 0;
	}
	printf("%lld",(n*(n-1)%mod)*qpow(2,n-2) % mod );

	return 0;
}

